package io.github.wppli.domain.pay.model.entity;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

@Data
public class PaymentData implements Serializable {
    /**
     * 返回状态，枚举值：
     * 0：成功
     * 1：失败
     */
    private int code;

    private String msg;

    @JSONField(name = "request_id")
    private String requestId;

    private PayData data;

    @Data
    public static class PayData {
        /**
         * 下单时间
         */
        @JSONField(name = "add_time")
        private String addTime;
        /**
         * 商户号
         */
        @JSONField(name = "mch_id")
        private String mchId;
        /**
         * 系统订单号
         */
        @JSONField(name = "order_no")
        private String orderNo;
        /**
         * 商户订单号
         */
        @JSONField(name = "out_trade_no")
        private String outTradeNo;
        /**
         * 微信支付订单号，当支付状态为已支付时返回此参数。
         */
        @JSONField(name = "pay_no")
        private String payNo;
        /**
         * 商品描述
         */
        private String body;
        /**
         * 支付金额
         */
        @JSONField(name = "total_fee")
        private BigDecimal totalFee;
        /**
         * 支付类型，枚举值：
         * NATIVE：扫码支付
         * H5：H5支付
         * APP：APP支付
         * JSAPI：公众号支付
         * MINIPROGRAM：小程序支付
         */
        @JSONField(name = "trade_type")
        private String tradeType;
        /**
         * 支付完成时间，当支付状态为已支付时返回此参数。
         */
        @JSONField(name = "success_time")
        private String successTime;
        /**
         * 附加数据，在支付接口中填写的数据，可作为自定义参数使用。
         */
        private String attach;
        /**
         * 支付者信息，当支付状态为已支付时返回此参数。
         */
        private String openid;
        /**
         * 支付状态，枚举值：
         * 0：未支付
         * 1：已支付
         * 示例值：1
         */
        @JSONField(name = "pay_status")
        private int payStatus;
    }
}